python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】 |
您所在的位置:网站首页 › A toy turtle翻译中文 › python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】 |
前言
本文参考:Python库官方文档 本文例子摘抄自Python库官方文档,为了方便讲解,个人进行了修改,并且相关函数说明不完全参照文档,在结果处贴出了执行结果,不方便用jpg等图片作为展示的用了gif格式图片进行展示结果。 如有错误欢迎指出,之后会出关于turtle的实现的博文,欢迎关注! 由于网上其它文档的形式不符合我个人习惯,在查阅资料时总感觉不是很习惯,就想着顺手写一篇博文作为一个参考示例。 在了解 turtle 时发现国内外一些青少年教育所使用的一些教学产品跟 turtle 类似;turtle 如果在国内作为一个青少年教学产品还是非常好的。 简介在 turtle 官方文档中介绍说到 “Turtle graphics is a popular way for introducing programming to kids.” 它是一个向青少年作为一个普及启蒙类编程的好方式;对于我个人来说,英文并不是我们的第一语言,一些学生的英文水平也不是过于优秀,在学习编程的时候会导致一些困难,虽然这些困难并不是决定学不学的会的主要原因,但也起到了一定的阻碍作用;如果在国内用 turtle 进行一个教学的话,用深圳的学生举例,可以用作小学5年级(包括五年级)以上学生的教学;这对于他们来说,turtle 带来的是其它教学产品所不能带来“专业编程”的实践体验;这可能就是模拟环境和真实环境的区别吧。(当然,专业编程从业者使用 turtle 也肯定是没问题,所以我之前才说,这个python库所带来的体验是比较接近于“专业”的。) turble 是由Wally Feurzig 和 Seymour Papert 在1966年进行开发的。 在 turtle 的基本开发中是围绕着一个2D平面进行开发的,其中的主角是一个小箭头;这个小箭头就像一个小海龟,通过编程,命令小海龟在屏幕上进行移动绘制,从而画出一条条线段。通过这些线段可以组成各式各样的图案,如果你的绘画技术不怎么好,也许使用 turtle 进行绘制会有意想不到的惊喜! 在官方文档的说明中,是以交互式的方式进行的说明,在本篇文章中,不以交互式方式进行说明;由于考虑到编程的普及这几年呈现低龄化,本篇将会尽量的详细说明,但一些深入的知识将不会讲解(之后再写一篇实现解析),一般来说简单实用只需要了解使用方式即可;敬请谅解。假设你是个从业经验的开发者,想了解实现过程,那么敬请期待我的下一篇文章。 注意,因为使用 turtle 的python是需要Tk支持的版本。Tkinter是标准的Python接口Tk的GUI工具包,可以使用命令 python -m tkinter 检查是否安装。如果出现一个简单的窗口即为已安装。Tk和tkinter在大多数Unix平台以及Windows系统上都可用。点击查看官方文档具体Tk的详情。 基本编程说明以下编程说明摘抄于官方文档(在本篇文档中初学者无需过多了解)。 在编程中,基本上使用有两个+两个类: TurtleScreen类将会绘制出一个2D平面,turtle 相当于绘画笔。。 它的构造函数需要一个Tkinter.Canvas或一个ScrolledCanvas作为参数。 当应用程序使用turtle时应该使用它。 Screen()函数返回一个TurtleScreen子类的单例。 当turtle被用作单独的绘制工具使,就应该使用这个函数。RawTurtle 别名是 RawPen,定义了在 TurtleScreen 上绘制的Turtle对象。它的构造函数需要Canvas,可用ScrolledCanvas或TurtleScreen作为参数,上一点已经提到 TurtleScreen 将会绘制出一个2D平面给予 turtle 绘制,因此RawTurtle对象知道在哪里绘制。 派生自RawTurtle的是子类Turtle(别名:),该子类使用自动创建Pen的“ Screen实例” (如果尚未存在)。RawTurtle/Turtle的所有方法也作为函数存在,即面向过程的接口的一部分。 过程接口提供了从类Screen和Turtle的方法派生的函数。它们与相应的方法同名。每当调用从screen方法派生的函数时,都会自动创建screen对象。每当调用从turtle方法派生的任何函数时,都会自动创建一个(未命名的)turtle对象。 函数列表在 Turtle 中,Turtle 方法分别为 turtle 运动、笔控制、turtle 状态;TurtleScreen 方法分为窗口控制、动画控制、屏幕事件、特殊方法、输入方法、面对屏幕的特殊方法。 turtle 运动一共有如下函数: 绘制及移动: forward() | fd()backward() | bk() | back()right() | rt()left() | lt()goto() | setpos() | setposition()setx()sety()setheading() | seth()home()circle()dot()stamp()clearstamp()clearstamps()undo()speed()取得 turtle 状态: position() | pos()towards()xcor()ycor()heading()distance()设置和测量: degrees()radians()笔控制->绘制状态: pendown() | pd() | down()penup() | pu() | up()pensize() | width()pen()isdown()颜色控制: color()pencolor()fillcolor()填满: filling()begin_fill()end_fill()更多绘制控制: reset()clear()write()笔状态->可见度: showturtle() | st()hideturtle() | ht()isvisible()外观: shape()resizemode()shapesize() | turtlesize()shearfactor()settiltangle()tiltangle()tilt()shapetransform()get_shapepoly() 未补全事件: onclick()onrelease()ondrag()一些 turtle 的特殊方法: begin_poly() end_poly() get_poly() clone() getturtle() | getpen() getscreen() setundobuffer() undobufferentries() 屏幕方法如下: 窗口控制: bgcolor()bgpic()clear() | clearscreen()reset() | resetscreen()screensize()setworldcoordinates()动画控制: delay()tracer()update()屏幕事件: listen()onkey() | onkeyrelease()onkeypress() 未补全onclick() | onscreenclick()ontimer()mainloop() | done() 未补全设置和特殊方法: mode() 未补全colormode() 未补全getcanvas()getshapes()register_shape() | addshape() 未补全turtles()window_height()window_width()输入方法: textinput()numinput()面对屏幕的特殊方法: bye()exitonclick() 未补全setup()title() 函数使用与示例 turtle 运动部分 forward() | fd()使用语法: turtle.forward(距离) turtle.fd(距离) 参数说明: 距离 一个数字 (整数 或者 浮点) (注:这个距离的单位是像素) 代码示例: from turtle import * forward(25) input()代码释义: from turtle import *: 在安装好turtle后,使用from引入turtle,导入其中所有的模块,所以我使用了import *; forward(25):由于我引入了 turtle 所以不再使用 turtle 进行调用,直接使用方法即可;使用forward向一个方向画一根线,这根线默认方向向右,朝着箭头所指的方向前进,并且是在行动中进行画线,方法传入的参数是你想绘制线段的长度,或者说是你想这只 turtle 想要行迹的距离,填入数字后,小 turtle 会向这个方向行动。 input():假设不适用input将会导致窗口一闪而过,使用input可以使你查看运行效果;当然不排除有些IDE或者编辑器默认有此功能。 运行结果如下: 运行效果如下: 使用语法: turtle.back(距离) turtle.bk(距离) turtle.backward(距离) 传入参数: 距离 数字 把乌龟向后移动一段距离,与乌龟前进的方向相反。不能改变乌龟的方向。 使用示例: from turtle import * forward(300) backward(400) input()代码释义: backward(400):使用backward返回turtle的行动,为了突出对比,使用了大于forward长度的距离参数。当然也可以使用bk和back方法,效果都是一样的: from turtle import * forward(300) bk(400) input()运行结果: 使用语法: turtle.right(angle) turtle.rt(angle) 参数: 角度 数字 (整数或者是浮点数) 使用right方法可以使 turtle 向右旋转角度,但要注意只是旋转角度方向,并不会前行。角度的旋转是以顺时针旋转。可以用正负号表示转向方向。不添加符号表示默认方式顺时针旋转,添加“-”号为逆时针旋转。 使用示例(为了更好的做比较,我在forward前添加了right转向): from turtle import * right(30) forward(300) input()right(30):顺时针转向30° 运行结果: right(-30):逆时针转向30° 运行结果: turtle.goto(x, y=None) turtle.setpos(x, y=None) turtle.setposition(x, y=None) 参数: x :一个数或一个坐标 y :一个数或者为空 在turtle 绘制的区域,是一个2D平面,这个平面由坐标定位,在turtle中使用pos表示坐标,初始位置为(0,0),使用goto传入坐标将会跳转至该坐标点并且绘制; 代码示例: from turtle import * goto(30,30) input()goto(30,30) :跳转到坐标点x为30,y为30处。 运行结果: turtle.setx(x) 参数: x:一个数字 (整数或者浮点) 设置x坐标的值,y坐标不变 turtle.sety(y) 参数: y :一个数字(整数或者浮点) 设置y坐标的值,x坐标不变 setx代码示例: from turtle import * setx(10) input()setx(10):设置x坐标到达10位置,sety不再赘述 turtle.setheading(to_angle) turtle.seth(to_angle) 参数: to_angle:一个整数(整数或者浮点)使用 setheading 将会把turtle初始状态设置为0°,类似于一个量角器,初始状态下turtle是个垂直于一条平面的线,并没有角度,所以为0,如果使用 setheading 传入参数 45 后,将会方向指向相对于初始状态的45°。 代码示例: from turtle import * setheading(45) input()运行效果:
turtle.home() 将turtle移动到原点坐标(0,0)-并将其航向设置为起始方向。 from turtle import * forward(80) home() input()home():将turtle至于初始坐标。 运行结果: turtle.circle(radius, extent=None, steps=None) 参数: radius :数字 半径extent : 数字 范围 可以为空steps : 整数 可以为空使用circle可以画出一个圆,或者弧度,第一个参数为半径,第二个参数可以控制绘制的范围多少,如果输入90,那么只绘制到90°位置;steps为阶梯,圆的边其实是锯齿状的,相当于像素点的感觉,一下代码将会作出对比,方便理解。 画出一个圆代码示例: from turtle import * circle(120) input()代码释义: circle(120):半径为120的圆 运行结果: 代码释义: circle(120,180):直径120的一个扇形。 代码释义: circle(120,180,1):阶梯为1的扇形。
turtle.dot(size=None, *color) 参数: size :大于0的整数color :颜色标识 用一个指定颜色绘制一个尺寸为size的原点。代码示例: from turtle import * dot(20,"blue") input()运行结果: turtle.stamp() 复制一个turtle。 from turtle import * stamp() color("blue") goto(100,0) input()代码释义: stamp():复制一个自己; color("blue"):设置当前的自己为蓝色; goto(100,0):移动到左边x为100,y为0处。 结果如下: turtle.clearstamp(stampid) 参数: stampid :使用 stamp 复制一个自己后将会返回一个 stamp的id值,传入id值即可删除复制的对象。代码示例: from turtle import * turtle2=stamp() color("blue") goto(100,0) clearstamp(turtle2) input()代码释义: turtle2=stamp():接收返回的stampid clearstamp(turtle2):删除复制的turtle 运行结果: turtle.clearstamps(n=None) 参数: 一个整数或者为空 删除复制的turtle的全部或前/后n个。如果n为空,则删除所有turtle;如果n>0,则删除前n个;如果n |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |